#!/bin/bash
# [root@web1 ~]# vim web.sh
#定义变量，指定FTP共享路径
ftp_url=ftp://192.168.4.30/deploy
#定义变量，指定网页根路径
web_dir=/var/www/html
#定义函数，行数名为down_file，该函数的作用是从FTP服务器下载代码数据到网站根目录
down_file(){
#获取FTP服务器上面最新构建的代码版本号
#curl是基于命令行的浏览器,-s选项为静默访问，不显示下载过程（可以自己对比不是用-s的差异）
  version=$(curl -s $ftp_url/ver.txt)
#将服务器上面的版本文件下载到web服务器的/var/www/html/目录下
#wget为下载工具（如果没有则需要安装），-q选项为静默模式下载，不显示下载过程
#-O选项可以指定将文件下载到哪里，这里是下载到/var/www/html/ver.txt
  wget -q $ftp_url/ver.txt -O $web_dir/ver.txt
#下载代码数据的打包文件，根据前面获取的版本号，下载对应的版本数据打包文件
  wget -q $ftp_url/packages/myweb-$version.tar.gz -O $web_dir/myweb-$version.tar.gz
#对下载下来的数据打包文件计算HASH值（哈希值），awk过滤仅显示第一列数据结果
  hash=$(md5sum $web_dir/myweb-$version.tar.gz| awk '{print $1}')
#使用curl访问ftp服务器上面的HASH值
  ftp_hash=$(curl -s $ftp_url/packages/myweb-$version.tar.gz.md5)
#对比本地和FTP服务的HASH值是否一致，如果不一致代表数据损坏了
#如果一致就可以解压该数据包，将数据解压到网站根目录下/var/www/html/
  if [ "$hash" == "$ftp_hash" ];then
     tar -xf $web_dir/myweb-$version.tar.gz -C $web_dir
  fi
}
#判断如果本地没有/var/www/html/ver.txt文件，则直接调用前面的函数下载代码数据
if [ ! -f $web_dir/ver.txt ];then
  down_file
fi
#盘如果本地有/var/www/html/ver.txt文件，则判断本地版本文件和FTP版本文件是否一致
#一致就不再下载FTP的数据，如果不一致则调用前面的函数下载新的代码数据包
if [ -f $web_dir/ver.txt ];then
  ftp_ver=$(curl -s $ftp_url/ver.txt)
  local_ver=$(cat $web_dir/ver.txt)
  if [ "$ftp_ver" != "$local_ver" ];then
      down_file
  fi
fi
